package br.com.ifsp.salto.matriculadp.negocio;

import java.util.List;

import br.com.ifsp.salto.matriculadp.dados.IHorarioDAO;
import br.com.ifsp.salto.matriculadp.negocio.to.DisciplinaTO;
import br.com.ifsp.salto.matriculadp.negocio.to.HorarioTO;

class HorarioBO {

	private final IHorarioDAO horarioDAO;

	public HorarioBO(final IHorarioDAO horarioDAO) {
		super();
		this.horarioDAO = horarioDAO;
	}

	/**
	 * @param idCurso id do curso que possui as disciplinas desejadas.
	 * @return todas as disciplinas do curso indicado.
	 */
	public List<DisciplinaTO> getAllDisciplinas(final long idCurso) {
		return horarioDAO.getAllDisciplinas(idCurso);
	}

	protected String isHorarioValid(final HorarioTO horario, final long idCurso) {
		List<DisciplinaTO> disciplinasCurso = getAllDisciplinas(idCurso);

		HorarioValidator validator = new HorarioValidator(horario, disciplinasCurso);

		boolean shouldContinue = validator.isHorarioValid();
		
		String invalidMessage = validator.getNotValidMessage(); 
		if(shouldContinue){
			return "";
		}else{
			return invalidMessage;
		}
	}

}
